package com.jiazixuan.stock.service;

import com.jiazixuan.stock.pojo.domain.*;
import com.jiazixuan.stock.vo.resp.PageResult;
import com.jiazixuan.stock.vo.resp.R;
import org.springframework.stereotype.Service;

import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

public interface StockService {
    /**
     * 获取国内大盘最新的数据
     * @return
     */
    R<List<InnerMarketDomain>> innerIndexAll();


    R<List<StockBlockDomain>> sectorAll();


    /**
     * 涨幅榜分页查询功能
     * 分页查询最新股票交易时间点下沪深两市个股行情数据，并根据涨幅降序排序展示
     */
    R<PageResult<StockUpdownDomain>> getStockInfoByPage(Integer page,Integer pageSize);

    /**
     * 统计沪深两市个股最新交易数据，并按涨幅降序排序查询前4条数据
     * @return
     */
    R<List<StockUpdownDomain>> getStockInfoAnd4();

    /**
     * 统计最新股票交易日内每分钟的涨跌停的股票数量
     * @return
     */
    R<Map<String, List>> getStockUpDownCount();

    /**
     * 将指定页的股票数据导出到excel表下
     * @param response
     * @param page  当前页
     * @param pageSize 每页大小
     */
    void exportStockUpDownInfo(Integer page, Integer pageSize, HttpServletResponse response);

    /**
     * 统计大盘股票T日和T-1日每分钟交易量的统计（成交量为沪市和深市成交量之和）
     * @return
     */
    R<Map<String, List>> getComparedStockTradeAmt();

    /**
     * 个股涨跌
     * @return
     */
    R<Map<String, Object>> getUpDown();

    /**
     * 功能描述：查询单个个股的分时行情数据，也就是统计指定股票T日每分钟的交易数据
     *          如果当前日期不在有效时间内，则以最近的一个股票交易时间作为查询时间点
     * @param code 股票编码
     * @return
     */
    R<List<Stock4MinuteDomain>> stockScreenTimeSharing(String code);

    R<List<Stock4EvrDayDomain>> stockScreenTimeDay(String code);

    /**
     * 外盘数据
     * @return
     */
    R<List<OuterMarketDomain>> outerMarket();

    /**
     * 搜索框模糊查询
     */
    R<List<Map>> searchStock(String searchStr);

    /**
     * 周K
     */
    R<List<Stock4EvrWeekDomain>> getWeekStock(String code);

    /**
     * 个股主营业务
     */
    R<StockBusinessInfomation> getInfomation(String code);

    /**
     * 获取个股最新分时行情数据
     */
    R<StockNewMinuteDomain> getStockNew(String code);

    /**
     * 查询最新交易流水
     */
    R<List<StockTransactionFlow>> getStockTransactionFlow(String code);
}
